#ifndef 	_LIST_H_
#define 	_LIST_H_

#define 	VARHANDLE 		void*

#define 	INT_TYPE 		0
#define 	STR_TYPE 		1

struct VARNODE
{
	int 			iType;
	VARHANDLE 		pValue;
	struct VARNODE*	pNext;
};

struct LIST
{
	struct VARNODE* pHead;
	struct VARNODE* pTail;
};

struct LIST* l_create();

int l_append(struct LIST* plList, int iType, VARHANDLE pValue);

struct VARNODE* l_find(struct LIST* plList, int iType, VARHANDLE pValue);

void l_release(struct LIST* plList);

void l_remove(struct LIST* plList, struct VARNODE* pNode);

void l_delete(struct LIST* plList, int iType, VARHANDLE pValue);

#endif	
